home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / mint / netlib / lib / gsockopt.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-27  |  854 b   |  52 lines

  1. /*
  2.  *    getsockopt() emulation for MiNT-Net, (w) '93, kay roemer
  3.  */
  4.  
  5. #include "socklib.h"
  6. #ifdef KERNEL
  7. #include "kerbind.h"
  8. #else
  9. #include <mintbind.h>
  10. #endif
  11. #include "sys/socket.h"
  12. #include "mintsock.h"
  13.  
  14. #ifndef KERNEL
  15. extern int errno;
  16. #endif
  17.  
  18. int
  19. getsockopt (fd, level, optname, optval, optlen)
  20.     int fd, level, optname;
  21.     void *optval;
  22.     _SIZE_T *optlen;
  23. {
  24.     struct getsockopt_cmd cmd;
  25.     long optlen32;
  26.     int r;
  27.  
  28.     if (optlen) optlen32 = *optlen;
  29.  
  30.     cmd.cmd =    GETSOCKOPT_CMD;
  31.     cmd.level =    level;
  32.     cmd.optname =    optname;
  33.     cmd.optval =    optval;
  34.     cmd.optlen =    &optlen32;
  35.  
  36. #ifdef KERNEL
  37.     r = f_cntl (fd, (long)&cmd, SOCKETCALL);
  38. #else
  39.     r = Fcntl (fd, (long)&cmd, SOCKETCALL);
  40. #endif
  41.     if (optlen) *optlen = optlen32;
  42. #ifdef KERNEL
  43.     return r;
  44. #else
  45.     if (r < 0) {
  46.         errno = -r;
  47.         return -1;
  48.     }
  49.     return 0;
  50. #endif
  51. }
  52.